工控网首页
>

应用设计

>

嵌入式设备WinCE下使用Storage Manager进行分区管理

嵌入式设备WinCE下使用Storage Manager进行分区管理

1). 简介

嵌入式设备WinCE下对Flash存储进行管理有多种方式,如Eboot下通过命令行操作,在WinCE下通过控制面板的存储管理,还有本文会着重介绍的通过StorageManager API函数进行操作。

相对于在Eboot下进行操作,通过API函数的方式管理Flash存储可以更方便的和WinCE应用部署相结合,方便进行量产更新,而直接控制面板操作一方面需要人工手动配置,另一方面对于某些平台对其支持并不完善,容易造成不可控的问题。

本文就基于Toradex Colibri iMX6S ARM嵌入式平台来演示通过Storage ManagerAPI函数来进行Flash磁盘管理。

2. 准备

a). ColibriiMX6S ARM核心版配合ColibriEva Board载板,连接串口和调试USB口到开发主机方便调试,具体操作方法可以参考这里。

b). Colibri iMX6S 系统使用Toradex WEC7Release V1.1,更新方法请参考这里。

c). Windows开发主机开发环境配置请参考这里。

3). Flash存储操作示例

a). Colibri iMX6S核心版配置了一个4GB的eMMC存储,模块出厂刷新的是EmbeddedLinux系统,需要按照这里的说明进入恢复模式后更新为WinCE系统,在这个过程中,eMMC被分区为如下模式:

------------------------------

- boot sector:引导扇区

- Partition table:分区表

- “empty” space:空闲空间用于存放windows CE image, splashscreen, registry

- Filesystem partition:文件系统分区, 由于在恢复模式下加载时并不知道具体eMMC容量, 因此默认只分配了256MB空间

------------------------------

b). 在WinCE下,则只能看到文件系统分区,即为“FlashDisk”盘,大小为256MB。这里我们就演示如何将默认的256MB 文件系统分区扩展为排除上面的前三项占用空间后的全部剩余空间。

c). 首先明确可用的最大文件系统空间大小

在Eboot下执行下面命令,从打印输出可以判断出可用的最大Filesystem空间为7430031个sectors,其他预留空间为303217个sectors。

----------------------------

#preparefs

Creatingfilesystem partition on SD 2

Numberof sectors in the SD/eMMC: 7733248.

Size in MB=3776

heads:(8)128

sectors=63

cylinders=958

Sectorsused for bootloader and OS: 303156

Startsector of filesystem partition: 303156.

Sectorsin filesystem partition: 7430031.

Successfullycreated 2 partitions

BootPartition size = 151578 Kbytes

File SystemPartition size = 3715015 Kbytes

----------------------------

c). 根据上面的开发指南,在开发主机创建Console应用程序工程storagetest,具体代码请见如下:

https://github.com/simonqin09/storagetest/blob/master/storagetest.cpp

简单说明如下:

./ 首先通过“OpenStore”API打开eMMC 存储设备“DSK1:”。

./ 然后通过“FindFirstPartiton”API找到当前的文件系统分区。

./ 然后通过“OpenPartition”打开当前文件系统分区并删除。

./ 然后通过“Createpartition”API创建上面定义好大小的预留空间分区和新的扩展文件系统分区。

./ 然后再次通过“FindFirstPartiton”API找到刚分好的预留空间分区并删除。

./ 然后再次通过“FindFirstPartiton”API找到扩展文件系统分区并格式化,之后就可以使用分区了。

4). 总结

本文基于NXP iMX6嵌入式平台测试了利用Storage Manager API 对Flash存储设备进行管理,方便嵌入式用户在应用程序中一体化处理相关操作。

审核编辑(
王静
)
投诉建议

提交

查看更多评论
其他资讯

查看更多

在 Linux 系统上 Docker 容器的性能影响

上游优先 - Toradex 采用主线内核支持

NXP iMX8M Plus M7核心FreeRTOS开发

嵌入式Linux上使用Ramoops

使用容器编译Yocto镜像